<?xml version="1.0" encoding="ascii"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <title>peach.nn.kmeans.KMeans</title>
  <link rel="stylesheet" href="epydoc.css" type="text/css" />
  <script type="text/javascript" src="epydoc.js"></script>
</head>

<body bgcolor="white" text="black" link="blue" vlink="#204080"
      alink="#204080">
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="peach-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a href="http://code.google.com/p/peach">Peach - Computational Intelligence for Python</a></th>
          </tr></table></th>
  </tr>
</table>
<table width="100%" cellpadding="0" cellspacing="0">
  <tr valign="top">
    <td width="100%">
      <span class="breadcrumbs">
        <a href="peach-module.html">Package&nbsp;peach</a> ::
        <a href="peach.nn-module.html">Package&nbsp;nn</a> ::
        <a href="peach.nn.kmeans-module.html">Module&nbsp;kmeans</a> ::
        Class&nbsp;KMeans
      </span>
    </td>
    <td>
      <table cellpadding="0" cellspacing="0">
        <!-- hide/show private -->
        <tr><td align="right"><span class="options">[<a href="javascript:void(0);" class="privatelink"
    onclick="toggle_private();">hide&nbsp;private</a>]</span></td></tr>
        <tr><td align="right"><span class="options"
            >[<a href="frames.html" target="_top">frames</a
            >]&nbsp;|&nbsp;<a href="peach.nn.kmeans.KMeans-class.html"
            target="_top">no&nbsp;frames</a>]</span></td></tr>
      </table>
    </td>
  </tr>
</table>
<!-- ==================== CLASS DESCRIPTION ==================== -->
<h1 class="epydoc">Class KMeans</h1><p class="nomargin-top"><span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans">source&nbsp;code</a></span></p>
<center>
<center>  <map id="uml_class_diagram_for_peach_nn_12" name="uml_class_diagram_for_peach_nn_12">
<area shape="rect" id="node115" href="peach.nn.kmeans.KMeans-class.html#c" title="A numpy array containing the centers of the classes in the algorithm. Each line represents a center, and the number of lines is the number of classes. This property is read and write, but care must be taken when setting new centers: if the dimensions are not exactly the same as given in the instantiation of the class (ie, C centers of dimension N, an exception will be raised." alt="" coords="17,31,851,49"/>
<area shape="rect" id="node115" href="peach.nn.kmeans.KMeans-class.html#__init__" title="Initializes the algorithm." alt="" coords="17,52,851,71"/>
<area shape="rect" id="node115" href="peach.nn.kmeans.KMeans-class.html#step" title="This method runs one step of the algorithm. It might be useful to track the changes in the parameters." alt="" coords="17,71,851,89"/>
<area shape="rect" id="node115" href="peach.nn.kmeans.KMeans-class.html#__call__" title="The __call__ interface is used to run the algorithm until convergence is found." alt="" coords="17,89,851,108"/>
<area shape="rect" id="node1" href="peach.nn.kmeans.KMeans-class.html" title="K&#45;Means clustering algorithm" alt="" coords="5,6,861,114"/>
</map>
  <img src="uml_class_diagram_for_peach_nn_12.gif" alt='' usemap="#uml_class_diagram_for_peach_nn_12" ismap="ismap" class="graph-without-title" />
</center>
</center>
<hr />
<p>K-Means clustering algorithm</p>
<p>This class implements the known and very used K-Means clustering algorithm.
In this algorithm, the centers of the clusters are selected randomly. The
points on the training set are classified in accord to their closeness to
the cluster centers. This changes the positions of the centers, which
changes the classification of the points. This iteration is repeated until
no changes occur.</p>
<p>Traditional K-Means implementations classify the points in the training set
according to the euclidian distance to the centers, and centers are computed
as the average of the points associated to it. This is the default behaviour
of this implementation, but it is configurable. Please, read below for more
detail.</p>

<!-- ==================== INSTANCE METHODS ==================== -->
<a name="section-InstanceMethods"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Instance Methods</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-InstanceMethods"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="peach.nn.kmeans.KMeans-class.html#__init__" class="summary-sig-name">__init__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">training_set</span>,
        <span class="summary-sig-arg">nclusters</span>,
        <span class="summary-sig-arg">classifier</span>=<span class="summary-sig-default">&lt;function ClassByDistance at 0x9fc641c&gt;</span>,
        <span class="summary-sig-arg">clusterer</span>=<span class="summary-sig-default">&lt;function ClusterByMean at 0x9fc6304&gt;</span>)</span><br />
      Initializes the algorithm.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__init__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__getc"></a><span class="summary-sig-name">__getc</span>(<span class="summary-sig-arg">self</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__getc">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr class="private">
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a name="__setc"></a><span class="summary-sig-name">__setc</span>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">c</span>)</span></td>
          <td align="right" valign="top">
            <span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__setc">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="peach.nn.kmeans.KMeans-class.html#step" class="summary-sig-name">step</a>(<span class="summary-sig-arg">self</span>)</span><br />
      This method runs one step of the algorithm. It might be useful to track
the changes in the parameters.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.step">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
      <table width="100%" cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td><span class="summary-sig"><a href="peach.nn.kmeans.KMeans-class.html#__call__" class="summary-sig-name">__call__</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">imax</span>=<span class="summary-sig-default">20</span>)</span><br />
      The <tt class="rst-docutils literal">__call__</tt> interface is used to run the algorithm until
convergence is found.</td>
          <td align="right" valign="top">
            <span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__call__">source&nbsp;code</a></span>
            
          </td>
        </tr>
      </table>
      
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__delattr__</code>,
      <code>__format__</code>,
      <code>__getattribute__</code>,
      <code>__hash__</code>,
      <code>__new__</code>,
      <code>__reduce__</code>,
      <code>__reduce_ex__</code>,
      <code>__repr__</code>,
      <code>__setattr__</code>,
      <code>__sizeof__</code>,
      <code>__str__</code>,
      <code>__subclasshook__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== PROPERTIES ==================== -->
<a name="section-Properties"></a>
<table class="summary" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Properties</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-Properties"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
<tr>
    <td width="15%" align="right" valign="top" class="summary">
      <span class="summary-type">&nbsp;</span>
    </td><td class="summary">
        <a href="peach.nn.kmeans.KMeans-class.html#c" class="summary-name">c</a><br />
      A <tt class="rst-docutils literal">numpy</tt> array containing the centers of the classes in the algorithm.
Each line represents a center, and the number of lines is the number of
classes. This property is read and write, but care must be taken when
setting new centers: if the dimensions are not exactly the same as given in
the instantiation of the class (<em>ie</em>, <em>C</em> centers of dimension <em>N</em>, an
exception will be raised.
    </td>
  </tr>
  <tr>
    <td colspan="2" class="summary">
    <p class="indent-wrapped-lines"><b>Inherited from <code>object</code></b>:
      <code>__class__</code>
      </p>
    </td>
  </tr>
</table>
<!-- ==================== METHOD DETAILS ==================== -->
<a name="section-MethodDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Method Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-MethodDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="__init__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__init__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">training_set</span>,
        <span class="sig-arg">nclusters</span>,
        <span class="sig-arg">classifier</span>=<span class="sig-default">&lt;function ClassByDistance at 0x9fc641c&gt;</span>,
        <span class="sig-arg">clusterer</span>=<span class="sig-default">&lt;function ClusterByMean at 0x9fc6304&gt;</span>)</span>
    <br /><em class="fname">(Constructor)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__init__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  Initializes the algorithm.
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>training_set</code></strong> - A list or array of vectors containing the data to be classified.
Each of the vectors in this list <em>must</em> have the same dimension, or
the algorithm won't behave correctly. Notice that each vector can be
given as a tuple -- internally, everything is converted to arrays.</li>
        <li><strong class="pname"><code>nclusters</code></strong> - The number of clusters to be found. This must be, of course, bigger
than 1. These represent the number of centers found once the
algorithm terminates.</li>
        <li><strong class="pname"><code>classifier</code></strong> - A function that classifies each of the points in the training set.
This function receives the training set and a list of centers, and
classify each of the points according to the given metric. Please,
look at the documentation on these functions for more information.
Its default value is <a href="#id1"><span class="rst-problematic" id="rst-id2">``</span></a>ClassByDistance` , which uses euclidian
distance as metric.</li>
        <li><strong class="pname"><code>clusterer</code></strong> - A function that computes the center of the cluster, given a set of
points. This function receives a list of points and returns the
vector representing the cluster. For more information, look at the
documentation for these functions. Its default value is
<tt class="rst-docutils literal">ClusterByMean</tt>, in which the cluster is represented by the mean
value of the vectors.</li>
    </ul></dd>
    <dt>Overrides:
        object.__init__
    </dt>
  </dl>
</td></tr></table>
</div>
<a name="step"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">step</span>(<span class="sig-arg">self</span>)</span>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.step">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  This method runs one step of the algorithm. It might be useful to track
the changes in the parameters.
  <dl class="fields">
    <dt>Returns:</dt>
        <dd>The computed centers for this iteration.</dd>
  </dl>
</td></tr></table>
</div>
<a name="__call__"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <table width="100%" cellpadding="0" cellspacing="0" border="0">
  <tr valign="top"><td>
  <h3 class="epydoc"><span class="sig"><span class="sig-name">__call__</span>(<span class="sig-arg">self</span>,
        <span class="sig-arg">imax</span>=<span class="sig-default">20</span>)</span>
    <br /><em class="fname">(Call operator)</em>
  </h3>
  </td><td align="right" valign="top"
    ><span class="codelink"><a href="peach.nn.kmeans-pysrc.html#KMeans.__call__">source&nbsp;code</a></span>&nbsp;
    </td>
  </tr></table>
  
  The <tt class="rst-rst-docutils literal rst-docutils literal">__call__</tt> interface is used to run the algorithm until
convergence is found.
  <dl class="fields">
    <dt>Parameters:</dt>
    <dd><ul class="nomargin-top">
        <li><strong class="pname"><code>imax</code></strong> - Specifies the maximum number of iterations admitted in the execution
of the algorithm. It defaults to 20.</li>
    </ul></dd>
    <dt>Returns:</dt>
        <dd>An array containing, at each line, the vectors representing the
centers of the clustered regions.</dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== PROPERTY DETAILS ==================== -->
<a name="section-PropertyDetails"></a>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr bgcolor="#70b0f0" class="table-header">
  <td colspan="2" class="table-header">
    <table border="0" cellpadding="0" cellspacing="0" width="100%">
      <tr valign="top">
        <td align="left"><span class="table-header">Property Details</span></td>
        <td align="right" valign="top"
         ><span class="options">[<a href="#section-PropertyDetails"
         class="privatelink" onclick="toggle_private();"
         >hide private</a>]</span></td>
      </tr>
    </table>
  </td>
</tr>
</table>
<a name="c"></a>
<div>
<table class="details" border="1" cellpadding="3"
       cellspacing="0" width="100%" bgcolor="white">
<tr><td>
  <h3 class="epydoc">c</h3>
  A <tt class="rst-rst-docutils literal rst-docutils literal">numpy</tt> array containing the centers of the classes in the algorithm.
Each line represents a center, and the number of lines is the number of
classes. This property is read and write, but care must be taken when
setting new centers: if the dimensions are not exactly the same as given in
the instantiation of the class (<em>ie</em>, <em>C</em> centers of dimension <em>N</em>, an
exception will be raised.
  <dl class="fields">
    <dt>Get Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="peach.nn.kmeans.KMeans-class.html#__getc" class="summary-sig-name" onclick="show_private();">__getc</a>(<span class="summary-sig-arg">self</span>)</span>
    </dd>
    <dt>Set Method:</dt>
    <dd class="value"><span class="summary-sig"><a href="peach.nn.kmeans.KMeans-class.html#__setc" class="summary-sig-name" onclick="show_private();">__setc</a>(<span class="summary-sig-arg">self</span>,
        <span class="summary-sig-arg">c</span>)</span>
    </dd>
  </dl>
</td></tr></table>
</div>
<br />
<!-- ==================== NAVIGATION BAR ==================== -->
<table class="navbar" border="0" width="100%" cellpadding="0"
       bgcolor="#a0c0ff" cellspacing="0">
  <tr valign="middle">
  <!-- Home link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="peach-module.html">Home</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Tree link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="module-tree.html">Trees</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Index link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="identifier-index.html">Indices</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Help link -->
      <th>&nbsp;&nbsp;&nbsp;<a
        href="help.html">Help</a>&nbsp;&nbsp;&nbsp;</th>

  <!-- Project homepage -->
      <th class="navbar" align="right" width="100%">
        <table border="0" cellpadding="0" cellspacing="0">
          <tr><th class="navbar" align="center"
            ><a href="http://code.google.com/p/peach">Peach - Computational Intelligence for Python</a></th>
          </tr></table></th>
  </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
  <tr>
    <td align="left" class="footer">
    Generated by Epydoc 3.0.1 on Sun Jul 31 16:59:40 2011
    </td>
    <td align="right" class="footer">
      <a target="mainFrame" href="http://epydoc.sourceforge.net"
        >http://epydoc.sourceforge.net</a>
    </td>
  </tr>
</table>

<script type="text/javascript">
  <!--
  // Private objects are initially displayed (because if
  // javascript is turned off then we want them to be
  // visible); but by default, we want to hide them.  So hide
  // them unless we have a cookie that says to show them.
  checkCookie();
  // -->
</script>
</body>
</html>
